package com.sparrow.resource.convert.impl;

import org.springframework.core.convert.converter.Converter;
import java.util.ArrayList;
import java.util.List;

/**
 * 字符串 -> List<int[]>
 * 数据模板示例： "1,2,3,4;5,6,7,8"
 * 每个 ';' 分隔的一组会被解析为一个 int[]，整个结果是 List<int[]>
 */
public class IntArrayGroupConverter implements Converter<String, List<int[]>> {

    @Override
    public List<int[]> convert(String source) {
        List<int[]> result = new ArrayList<>();
        if (source == null || source.trim().isEmpty()) {
            return result;
        }

        // 按 ';' 分组
        String[] groups = source.split(";");
        for (String group : groups) {
            if (group == null) continue;
            group = group.trim();
            if (group.isEmpty()) continue;

            String[] tokens = group.split(",");
            // 用临时列表收集有效数字，跳过空项
            List<Integer> tmp = new ArrayList<>(tokens.length);
            for (String t : tokens) {
                if (t == null) continue;
                t = t.trim();
                if (t.isEmpty()) continue;
                try {
                    tmp.add(Integer.parseInt(t));
                } catch (NumberFormatException e) {
                    // 如果你希望遇到非法数字抛异常，改为 throw new IllegalArgumentException(...)
                    // 这里选择跳过非法项（可以按需修改）
                }
            }

            if (!tmp.isEmpty()) {
                int[] arr = new int[tmp.size()];
                for (int i = 0; i < tmp.size(); i++) {
                    arr[i] = tmp.get(i);
                }
                result.add(arr);
            }
        }

        return result;
    }
}

